#ifndef __GRAPHIC_PARTICLES_MANAGER__
#define __GRAPHIC_PARTICLES_MANAGER__
/*--------------------------------------------------------------------------------*/
#include "primitives.h"
#include "graphic_particle_system.h"
#include "defs.h"
#include "ref_to_.h"
#include "object.h"
/*--------------------------------------------------------------------------------*/

/*--------------------------------------------------------------------------------*/
class GRAPHIC_PARTICLE_MANAGER :
	public OBJECT
{
	// -- PUBLIC

public :

	// .. TYPES

	DECLARE_REF( GRAPHIC_PARTICLE_MANAGER )

	// .. CONSTRUCTORS

	GRAPHIC_PARTICLE_MANAGER();

	// .. OPERATIONS

	GRAPHIC_PARTICLE_SYSTEM::REF CreateEmptySystem();

	// ~~

	GRAPHIC_PARTICLE_SYSTEM::REF CreateConeSystem();

	// ~~

	VOID AddSystem(
		const GRAPHIC_PARTICLE_SYSTEM & system
		);

	// ~~

	VOID Update(
		const TIMER & time_step
		);

	// ~~

	VOID Render();

	// .. FUNCTIONS

	DECLARE_SINGLETON( GRAPHIC_PARTICLE_MANAGER );

	// -- PRIVATE

private :

	// .. CONSTRUCTORS

	GRAPHIC_PARTICLE_MANAGER(
		const GRAPHIC_PARTICLE_MANAGER & other
		);

	// .. OPERATORS

	GRAPHIC_PARTICLE_MANAGER & operator=(
		const GRAPHIC_PARTICLE_MANAGER & other
		);

	// .. ATTRIBUTES

	ARRAY< GRAPHIC_PARTICLE_SYSTEM::REF >
		ParticleSystemTable;
};
#endif
